/**
 * 供应商模块API接口
 * 包含店铺注册、管理、用户管理、银行卡管理、店铺设置等完整功能
 */
import request from '@/utils/request'

export default {
  /**
   * 供应商店铺注册
   * @param {Object} registerData 注册数据
   * @param {string} registerData.shopName 店铺名称
   * @param {string} registerData.contactName 联系人姓名
   * @param {string} registerData.contactPhone 联系电话
   * @param {string} registerData.businessLicense 营业执照
   * @param {string} registerData.idCard 身份证
   * @param {string} registerData.address 详细地址
   * @returns {Promise} 注册结果
   */
  registerShop(registerData) {
    return request.post('/sapi/shop/ShopRegister', registerData)
  },

    /**
   * 获取店铺注册验证码
   * @param {string}  phone 手机号
   * @returns {Promise} 
   */
  getShopRegisterCode(phone) {
    return request.get('/sapi/shopUser/getShopRegisterCode?phone='+phone)
  },
  

  /**
   * 校验手机号和店铺名称
   * @param {Object} params 校验参数
   * @param {string} params.phone 手机号
   * @param {string} params.shopName 店铺名称
   * @returns {Promise} 校验结果
   */
  validatePhoneAndShopName(params) {
    return request.get('/sapi/shop/validatePhoneAndShopName', params)
  },

  /**
   * 获取注册店铺验证码
   * @param {string} phone 手机号
   * @returns {Promise} 验证码发送结果
   */
  getRegisterShopCode(phone) {
    return request.get('/sapi/shop/getRegisterShopCode', { phone })
  },

  /**
   * 获取店铺类别列表
   * @returns {Promise} 店铺类别列表
   */
  getCategoryList() {
    return request.get('/sapi/shop/getCategoryList')
  },

  /**
   * 获取客服配置
   * @returns {Promise} 客服配置信息
   */
  getCustomerConfig() {
    return request.get('/sapi/shop/getCustomerConfig')
  },

  /**
   * 扫码签到
   * @param {Object} signData 签到数据
   * @param {string} signData.qrCode 二维码内容
   * @param {string} signData.location 签到位置
   * @returns {Promise} 签到结果
   */
  scanCodeSignIn(signData) {
    return request.post('/sapi/shop/scanCodeSignIn', signData)
  },
  /**
   * 获取店铺详情信息
   * @returns {Promise} 店铺详情数据
   */
  getShopDetail() {
    return request.get('/sapi/shop/getShopDetail')
  },

  /**
   * 获取店铺简要信息
   * @returns {Promise} 店铺简要信息
   */
  getShopSimpleDetail() {
    return request.get('/sapi/shop/getShopSimpleDetail')
  },

  /**
   * 更新店铺信息
   * @param {Object} shopData 店铺信息数据
   * @param {string} shopData.shopName 店铺名称
   * @param {string} shopData.contactName 联系人姓名
   * @param {string} shopData.contactPhone 联系电话
   * @param {string} shopData.address 详细地址
   * @param {string} shopData.description 店铺简介
   * @returns {Promise} 更新结果
   */
  updateShopInfo(shopData) {
    return request.put('/sapi/shop/updateShopInfo', shopData)
  },

  /**
   * 上传店铺头像
   * @param {File} file 头像文件
   * @returns {Promise} 上传结果
   */
  uploadShopAvatar(file) {
    return request.upload('/sapi/shop/uploadAvatar', { file })
  },

  /**
   * 获取店铺用户列表（分页）
   * @param {Object} params 查询参数
   * @param {number} params.pageNo 页码
   * @param {number} params.pageSize 每页条数
   * @returns {Promise} 用户列表数据
   */
  getShopUserPageList(params) {
    return request.get('/sapi/shopUser/getShopUserPageList', params)
  },

  /**
   * 添加店铺用户
   * @param {Object} userData 用户数据
   * @param {string} userData.name 用户姓名
   * @param {string} userData.phone 手机号
   * @param {string} userData.shopRole 店铺角色
   * @param {string} userData.password 密码
   * @returns {Promise} 添加结果
   */
  addShopUser(userData) {
    return request.post('/sapi/shopUser/add', userData)
  },

  /**
   * 更新店铺用户信息
   * @param {Object} userData 用户数据
   * @param {string} userData.id 用户ID
   * @param {string} userData.name 用户姓名
   * @param {string} userData.phone 手机号
   * @param {string} userData.shopRole 店铺角色
   * @returns {Promise} 更新结果
   */
  updateShopUser(userData) {
    return request.put('/sapi/shopUser/update', userData)
  },

  /**
   * 删除店铺用户
   * @param {string} userId 用户ID
   * @returns {Promise} 删除结果
   */
  deleteShopUser(userId) {
    return request.delete('/sapi/shopUser/delete?id='+userId)
  },

    /**
   * 获取添加用户验证码
   * @param {string}  phone 手机号
   * @returns {Promise} 
   */
  getAddCode(phone) {
    return request.get('/sapi/shopUser/getAddCode?phone='+phone)
  },
  


  /**
   * 重置店铺用户密码
   * @param {Object} resetData 重置数据
   * @param {string} resetData.userId 用户ID
   * @param {string} resetData.newPassword 新密码
   * @returns {Promise} 重置结果
   */
  resetShopUserPassword(resetData) {
    return request.post('/sapi/shopUser/resetPassword', resetData)
  },

  /**
   * 获取店铺用户详情
   * @param {string} userId 用户ID
   * @returns {Promise} 用户详情
   */
  getShopUserDetail(userId) {
    return request.get('/sapi/shopUser/getDetail', { id: userId })
  },

  /**
   * 更新店铺用户状态
   * @param {Object} statusData 状态数据
   * @param {string} statusData.userId 用户ID
   * @param {string} statusData.status 状态值
   * @returns {Promise} 更新结果
   */
  updateShopUserStatus(statusData) {
    return request.post('/sapi/shopUser/updateStatus', statusData)
  },

  /**
   * 获取店铺实力展示图片列表
   * @returns {Promise} 图片列表
   */
  getShopResourceList() {
    return request.get('/sapi/shop/getShopResourceList')
  },

  /**
   * 添加店铺实力展示图片
   * @param {Object} resourceData 图片数据
   * @param {string} resourceData.resourceId 图片资源ID
   * @param {number} resourceData.sortNo 排序号
   * @returns {Promise} 添加结果
   */
  addShopResource(resourceData) {
    return request.post('/sapi/shop/addShopResource', resourceData)
  },

  /**
   * 删除店铺实力展示图片
   * @param {string} resourceId 图片资源ID
   * @returns {Promise} 删除结果
   */
  deleteShopResource(resourceId) {
    return request.delete('/sapi/shop/deleteShopResource', { id: resourceId })
  },

  /**
   * 更新店铺实力展示图片排序
   * @param {Array} resourceList 图片列表
   * @returns {Promise} 更新结果
   */
  updateShopResourceSort(resourceList) {
    return request.post('/sapi/shop/updateShopResourceSort', { resourceList })
  },

  /**
   * 获取店铺等级信息
   * @returns {Promise} 等级信息
   */
  getShopGradeInfo() {
    return request.get('/sapi/shop/getShopGradeInfo')
  },

  /**
   * 获取店铺统计数据
   * @param {Object} params 查询参数
   * @param {string} [params.startDate] 开始日期
   * @param {string} [params.endDate] 结束日期
   * @returns {Promise} 统计数据
   */
  getShopStatistics(params = {}) {
    return request.get('/sapi/shop/getShopStatistics', params)
  },

  /**
   * 获取店铺认证状态
   * @returns {Promise} 认证状态信息
   */
  getShopAuthStatus() {
    return request.get('/sapi/shop/getShopAuthStatus')
  },

  /**
   * 提交店铺认证申请
   * @param {Object} authData 认证数据
   * @param {string} authData.businessLicense 营业执照
   * @param {string} authData.idCard 身份证
   * @param {string} authData.bankCard 银行卡信息
   * @returns {Promise} 提交结果
   */
  submitShopAuth(authData) {
    return request.post('/sapi/shop/submitShopAuth', authData)
  },

  /**
   * 获取店铺设置信息
   * @returns {Promise} 设置信息
   */
  getShopSettings() {
    return request.get('/sapi/shop/getShopSettings')
  },

  /**
   * 更新店铺设置
   * @param {Object} settings 设置数据
   * @param {boolean} settings.autoAcceptOrder 是否自动接单
   * @param {string} settings.businessHours 营业时间
   * @param {string} settings.deliveryRange 配送范围
   * @returns {Promise} 更新结果
   */
  updateShopSettings(settings) {
    return request.put('/sapi/shop/updateShopSettings', settings)
  },

  /**
   * 获取店铺消息通知设置
   * @returns {Promise} 通知设置
   */
  getShopNotificationSettings() {
    return request.get('/sapi/shop/getNotificationSettings')
  },

  /**
   * 更新店铺消息通知设置
   * @param {Object} notificationSettings 通知设置
   * @param {boolean} notificationSettings.orderNotification 订单通知
   * @param {boolean} notificationSettings.systemNotification 系统通知
   * @returns {Promise} 更新结果
   */
  updateShopNotificationSettings(notificationSettings) {
    return request.put('/sapi/shop/updateNotificationSettings', notificationSettings)
  },

  // ==================== 通联会员银行卡管理 ====================

  /**
   * 通联会员-查询余额
   * @returns {Promise} 余额信息
   */
  getAllinMemberBalance() {
    return request.get('/sapi/shop/getBalance')
  },

  /**
   * 通联会员-查询银行卡
   * @returns {Promise} 银行卡信息
   */
  getAllinMemberBankCard() {
    return request.get('/sapi/shop/getBankCard')
  },

  /**
   * 通联会员-请求绑定银行卡
   * @param {Object} bindData 绑定请求数据
   * @param {string} bindData.cardNumber 银行卡号
   * @param {string} bindData.cardHolder 持卡人姓名
   * @param {string} bindData.idCard 身份证号
   * @param {string} bindData.phone 手机号
   * @returns {Promise} 绑定请求结果
   */
  requestBindBankCard(bindData) {
    return request.post('/sapi/shop/requestBindBankCard', bindData)
  },

  /**
   * 通联会员-绑定银行卡
   * @param {Object} bindData 绑定数据
   * @param {string} bindData.requestId 绑定请求ID
   * @param {string} bindData.smsCode 短信验证码
   * @returns {Promise} 绑定结果
   */
  bindAllinBankCard(bindData) {
    return request.post('/sapi/shop/bindBankCard', bindData)
  },

  /**
   * 通联会员-解绑银行卡
   * @returns {Promise} 解绑结果
   */
  unbindAllinBankCard() {
    return request.post('/sapi/shop/unbindBankCard')
  },

  /**
   * 通联会员-绑定手机号
   * @param {Object} phoneData 手机绑定数据
   * @param {string} phoneData.phone 手机号
   * @param {string} phoneData.smsCode 短信验证码
   * @returns {Promise} 绑定结果
   */
  bindAllinMemberPhone(phoneData) {
    return request.post('/sapi/shop/bindPhone', phoneData)
  },

  /**
   * 通联会员-发送绑定手机验证码
   * @returns {Promise} 发送结果
   */
  sendAllinMemberPhoneCode() {
    return request.post('/sapi/shop/sendCode')
  },

  /**
   * 通联会员-提现申请
   * @param {Object} withdrawData 提现数据
   * @param {number} withdrawData.amount 提现金额
   * @param {string} withdrawData.bankCardId 银行卡ID
   * @param {string} [withdrawData.remark] 备注
   * @returns {Promise} 提现申请结果
   */
  allinMemberWithdraw(withdrawData) {
    return request.post('/sapi/shop/withdraw', withdrawData)
  },

  // ==================== 店铺钱包管理 ====================

  /**
   * 获取店铺钱包余额信息
   * @returns {Promise} 钱包余额数据
   */
  getShopWalletBalance() {
    return request.get('/sapi/shop/getWalletBalance')
  },

  /**
   * 获取店铺银行卡信息
   * @returns {Promise} 银行卡信息
   */
  getShopBankCard() {
    return request.get('/sapi/shop/getBankCard')
  },

  /**
   * 绑定店铺银行卡
   * @param {Object} bankCardData 银行卡数据
   * @param {string} bankCardData.cardNumber 卡号
   * @param {string} bankCardData.cardHolder 持卡人
   * @param {string} bankCardData.bankName 银行名称
   * @returns {Promise} 绑定结果
   */
  bindShopBankCard(bankCardData) {
    return request.post('/sapi/shop/bindBankCard', bankCardData)
  },

  /**
   * 解绑店铺银行卡
   * @param {string} cardId 银行卡ID
   * @returns {Promise} 解绑结果
   */
  unbindShopBankCard(cardId) {
    return request.delete('/sapi/shop/unbindBankCard', { cardId })
  },

  /**
   * 获取店铺交易记录
   * @param {Object} params 查询参数
   * @param {number} params.pageNo 页码
   * @param {number} params.pageSize 每页条数
   * @param {string} [params.startDate] 开始日期
   * @param {string} [params.endDate] 结束日期
   * @param {string} [params.transactionType] 交易类型
   * @returns {Promise} 交易记录列表
   */
  getShopTransactionList(params) {
    return request.get('/sapi/shop/getTransactionList', params)
  },

  /**
   * 申请提现
   * @param {Object} withdrawData 提现数据
   * @param {number} withdrawData.amount 提现金额
   * @param {string} withdrawData.bankCardId 银行卡ID
   * @param {string} [withdrawData.remark] 备注
   * @returns {Promise} 申请结果
   */
  applyWithdraw(withdrawData) {
    return request.post('/sapi/shop/applyWithdraw', withdrawData)
  },

  /**
   * 获取提现记录
   * @param {Object} params 查询参数
   * @param {number} params.pageNo 页码
   * @param {number} params.pageSize 每页条数
   * @param {string} [params.status] 提现状态
   * @returns {Promise} 提现记录列表
   */
  getWithdrawList(params) {
    return request.get('/sapi/shop/getWithdrawList', params)
  },

  /**
   * 获取店铺二维码
   * @returns {Promise} 二维码数据
   */
  getShopQRCode() {
    return request.get('/sapi/shop/getQRCode')
  },

  /**
   * 生成店铺分享链接
   * @returns {Promise} 分享链接
   */
  generateShopShareLink() {
    return request.post('/sapi/shop/generateShareLink')
  }
}
